# coding:utf-8
from easygui import fileopenbox
from mathlib import wavread
from OPAP.minPhase import MinPhase
from numpy.core.numeric import arange
from numpy.ma.core import size
import pylab

if __name__ == '__main__':
    
    wavFile = fileopenbox(title=u"ファイル選択", default="*.wav")
    x, fs, bits = wavread(wavFile, False)
    
    #信号のパラメータを確認
    print u'信号長:', size(x, 0)
    print u'サンプリング周波数:', fs, '[Hz]'
    print u'量子化ビット数', bits
    
    print size(x), size(x, 0), size(x,1)
    
    if size(x, 1) == 2:
        x = x.flatten()[:x.size / 2] #1チャンネル分だけ取り出す
    else:
        x = x.flatten()
    
    #時間軸ベクトルの設定
    fs = float(fs)
    t = arange(0, len(x) / fs, 1 / fs)
    
    #残響抑圧前の信号プロット
    pylab.subplot(211)
    pylab.plot(t, x, label="Before")
    pylab.ylabel('amplitude')
    pylab.xlabel('time[s]')
    pylab.legend()
    pylab.grid(True)
    
    #残響抑圧のメイン
    minPhase = MinPhase(x)
    hmin = minPhase.calc()
    
    #時間軸ベクトルの設定
    t = arange(0, minPhase.N / fs, 1 / fs)
    
    #残響抑圧後の信号プロット
    pylab.subplot(212)
    pylab.plot(t, hmin, label="After")
    pylab.ylabel('amplitude')
    pylab.xlabel('time[s]')
    pylab.legend()
    pylab.grid(True)
    pylab.show()
